package com.happyfamily.springboot.crowdsourcingplatform.dao.guo;


import com.happyfamily.springboot.crowdsourcingplatform.model.Need;
import com.happyfamily.springboot.crowdsourcingplatform.model.SysUser;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;

@Mapper
public interface EmployerAndServiceDao
{

	/**
	 * 通过用户，角色类型，参数表，服务类型查询雇主集合
	 * @param startPosition
	 * @param limit
	 * @return
	 */
	@Select("SELECT * FROM sys_user su,sys_role sr,parameter p,server_type st " +
			"WHERE su.rid=sr.id and su.sid=st.sid and su.pid=p.pid and  sr.id=3 " +
			"and st.sid=1 order by su.uid limit #{startPosition},#{limit}")
	List<SysUser> getList(@Param("startPosition") Integer startPosition, @Param("limit") Integer limit);

	/**
	 * 通过角色类型统计当前雇主数量
	 * @return
	 */
	@Select("SELECT COUNT(*) FROM sys_user where rid=3")
	int getSum();

	/**
	 * 通过ID重置当前密码
	 * @param uid 雇主ID
	 * @return
	 */
	@Update(" UPDATE sys_user SET upassword=#{upassword} WHERE uid=#{uid}")
	int resetPassword(String upassword, Long uid);

	/**
	 * 通过ID更改用户状态
	 * @param uid 雇主ID
	 * @param pid 参数表ID
	 * @return
	 */
	@Update(" UPDATE sys_user SET pid=#{pid} WHERE uid=#{uid}")
	int changeStates(@Param("uid") Long uid,@Param("pid") Long pid );

	/**
	 * 模糊搜索uname获取雇主集合
	 * @param uname 雇主姓名
	 * @param startPeople
	 * @param limit
	 * @return
	 */
	@Select("SELECT * FROM sys_user su,sys_role sr,parameter p,server_type st " +
			"WHERE su.rid=sr.id and su.sid=st.sid and su.pid=p.pid and  sr.id=3 and " +
			"st.sid=1 and su.uname like '%${uname}%' order by su.uid limit #{startPeople},#{limit}")
	List<SysUser> getSpecifyList(String uname,@Param("startPeople") Integer startPeople, @Param("limit") Integer limit);


	/**
	 * 模糊搜索uname统计雇主数量
	 * @param uname 雇主姓名
	 * @return
	 */
	@Select("SELECT COUNT(*) FROM sys_user where rid=3  and uname like '%${uname}%'")
	int getSpecifySum(String uname);

	/**
	 * 通过参数表ID查询参数名称
	 * @param pid 参数表的ID
	 * @return
	 */
	@Select("SELECT pname from parameter where pid=#{pid}")
	String getEmployersStates(Long pid);

	/**
	 * 通过角色ID查询在该ID内的服务商集合
	 * @param rid1 传入的参数1 该参数带代表的是角色的类型
	 * @param rid2 传入的参数1
	 * @param startPosition
	 * @param limit
	 * @return
	 */
	@Select("SELECT * FROM sys_user su WHERE su.rid  in (#{rid1},#{rid2}) order by su.uid limit #{startPosition},#{limit}")
	List<SysUser> getServiceProvidersList(Integer rid1,Integer rid2,@Param("startPosition") Integer startPosition, @Param("limit") Integer limit);

	/**
	 * 通过角色ID统计查询在该ID内的服务商数量
	 * @param rid1 传入的参数1 该参数带代表的是角色的类型
	 * @param rid2 传入的参数2
	 * @return
	 */
	@Select("SELECT COUNT(*) FROM sys_user where rid in (#{rid1},#{rid2})")
	int getServiceProvidersSum(Integer rid1,Integer rid2);

	/**
	 *通过角色ID查询角色名称
	 * @param id 该参数带代表的是角色类型表的ID
	 * @return
	 */
	@Select("SELECT description from sys_role where id=#{id}")
	String getServiceProvidersStates(Integer id);

	/**
	 * 通过服务商ID查询服务商信息
	 * @param uid 服务商ID
	 * @return
	 */
    @Select("SELECT * FROM sys_user WHERE uid=#{uid}")
	SysUser obtainServiceOne(Integer uid);

	/**
	 *设置服务商的角色类型，条件为通过服务商ID
	 * @param rid 服务商类型
	 * @param uid 服务商ID
	 * @return
	 */
	@Update("UPDATE sys_user SET rid=#{rid} WHERE uid=#{uid}")
	int changeServiceType(Integer rid,Integer uid);

	/**
	 * 模糊搜索uname获取服务商集合
	 * @param rid1 传入的参数1 该参数带代表的是角色的类型
	 * @param rid2 传入的参数2
	 * @param uname 参数搜索的名字
	 * @param startPosition
	 * @param limit
	 * @return
	 */
	@Select("SELECT * FROM sys_user su WHERE su.rid  in (#{rid1},#{rid2}) and uname like '%${uname}%' order by su.uid limit #{startPosition},#{limit}")
	List<SysUser> getSpecifiedServiceProvidersList(Integer rid1,Integer rid2,String uname,@Param("startPosition") Integer startPosition, @Param("limit") Integer limit);

	/**
	 * 模糊搜索uname统计服务商数量
	 * @param rid1 传入的参数1 该参数带代表的是角色的类型
	 * @param rid2 传入的参数2 该参数带代表的是角色的类型
	 * @param uname 参数搜索的名字
	 * @return
	 */
	@Select("SELECT COUNT(*) FROM sys_user where rid in (#{rid1},#{rid2}) and uname like '%${uname}%'")
	int getSpecifiedServiceProvidersSum(Integer rid1,Integer rid2,String uname);

	/**
	 * 根据账号获取user对象
	 * @param account 用户账号
	 * @return
	 */
	@Select("SELECT * FROM sys_user WHERE uaccount=#{account}")
	SysUser getUser(String account);

	/**
	 * 根据账号修改密码
	 * @param upassword 密码
	 * @param uaccount   账号
	 * @return
	 */
	@Update("UPDATE sys_user SET upassword=#{upassword} WHERE uaccount=#{uaccount}")
	int changePassword(@Param("upassword") String upassword,@Param("uaccount") String uaccount);

	Long getConsultantListByUname(Integer rid1,Integer rid2,@Param("uname") String uname,@Param("sid") String sid);

	List<SysUser> getConsultantListByUnamePage(Integer rid1,Integer rid2,@Param("uname")String uname,@Param("sid")String sid,Integer startPosition, Integer limit);
}
